(function(){
    var banner = function(json){
        this.$box= $("#"+json.id);
        this.animateAuto= true;
        this.showImage= 1;
        this.lamp= true;
        this.btnGroup= true;
        this.key= null;
        this.baseDom= [
            '<div class="dmui-banner-box">',
            '<div class="dmui-banner-images" alt="图片区域"></div>',
            '<div class="dmui-banner-button" alt="按钮组区域">' +
            '<span class="dmui-banner-prev" alt="上一张"><img class="dmui-banner-prev" src="images/banner_left.png" alt=""></span>' +
            '<span class="dmui-banner-next" alt="下一张" style="top:0;"><img class="dmui-banner-next" src="images/banner_right.png" alt=""></span>' +
            '</div>',
            '<div class="dmui-banner-lamp" alt="跑马灯区域"></div>',
            '</div>'
        ].join("");
    };
    //主入口
    banner.prototype.init= function(json){
        /**
         * json说明：
         * 	id :  装载容器id（必须）
         * 	showTime ： 停留时间 （默认：3000）
         * 	transitionTime ： 切换时间 （默认：500）
         * 	animateAuto : 是否自动动画 （默认：true）
         * 	showImage : 每次显示几张图片（默认：1）
         * 	lamp : 是否显示跑马灯 （默认 ： true）
         * 	btnGroup : 是否显示操作按钮组 （默认 ： true）
         * 	data : [
         * 		{
			 * 			title :  提示文字
			 * 			img : 轮播图片地址 （必须）
			 * 			href : 跳转（相对路径）
			 * 		}
         * 		.......
         * 		.......
         * 	]
         * **/
        if(!json.id){
            console.log("error : 无法找到加载轮播图的容器");
            return;
        }
        json.showTime === undefined && (json.showTime= 3000);
        json.transitionTime === undefined && (json.transitionTime= 500);
        this.animateAuto= ((json.animateAuto === true || json.animateAuto=== false) ? json.animateAuto : this.animateAuto);
        this.showImage= ((json.showImage && json.showImage>= 1 ) ? json.showImage : this.showImage);
        this.lamp= ((json.lamp === true || json.lamp=== false) ? json.lamp : this.lamp);
        this.btnGroup= ((json.btnGroup === true || json.btnGroup=== false) ? json.btnGroup : this.btnGroup);

        this.$box.html(this.baseDom);
        this.$box= $(".dmui-banner-box", this.$box);
        this.initData(json);
        this.animateAuto && this.interval(json);
        this.event(json);
    };
    //加载轮播图、提示文字
    banner.prototype.initData= function(json){
        for(var i= 0, len= json.data.length, arr=["<ul class='dmui-banner-ul'>"],lamp= []; i<len ;i++){
            arr.push(["<li class='dmui-banner-li'  data-index='"+ i+ "'>",
                '<a class="link-items" href="javascript:;" data-id="'+json.data[i].id+'" data-title="'+json.data[i].title+'" data-href="'+json.data[i].href+'"><img class="dmui-banner-img" src="'+ json.data[i].img+ '" /></a>',
                (json.data[i].title ? ('<p class="dmui-banner-title">'+ json.data[i].title+'</p>') : ''),
                "</li>"
            ].join(""));
            this.lamp && lamp.push('<i data-index="'+ i+ '" class="' + (i== 0 ? 'active' : '')+'"></i>')
        }
        arr.push("</ul>");
        $(".dmui-banner-images", this.$box).html(arr.join(""));
        $(".dmui-banner-lamp", this.$box).html(lamp.join(""));
        $(".dmui-banner-li", this.$box).css("width", parseInt(this.$box.css("width"))/this.showImage+ "px");
        $(".dmui-banner-ul", this.$box).css("width", parseInt($(".dmui-banner-li", this.$box).css("width"))*json.data.length+ "px");
        if(this.showImage > 1 ){
            $(".dmui-banner-li", this.$box).addClass("dmui-banner-li-index");
        }
        if(this.btnGroup){
            this.$box.find(".dmui-banner-button").removeClass("hide");
        }else{
            this.$box.find(".dmui-banner-button").addClass("hide");
        }
    };
    //注册定时器并启动动画
    banner.prototype.interval= function(json){
        var _this= this;
        if(_this.key){
            clearInterval(_this.key);
        }
        if(this.showImage > 1 ){
            _this.key= setInterval(function(){
                _this.animatePrev(json);
            }, json.showTime);
        }else{
            _this.key= setInterval(function(){
                _this.animatePrev(json);
            }, json.showTime);
        }
    };
    //清除动画、定时器
    banner.prototype.clearInterval= function(){
        $(".dmui-banner-ul", this.$box).stop(true);
        clearInterval(this.key);
        this.key= null;
    };
    //向右滑动动画
    banner.prototype.animatePrev= function(json){
        if(json.data.length < 2) return;
        var _this= this;
        $(".dmui-banner-lamp>i", this.$box).removeClass("active").eq($(".dmui-banner-li", _this.$box).eq(1).attr("data-index")).addClass("active");
        $(".dmui-banner-ul", this.$box).animate({
            left : ( "-"+ $(".dmui-banner-li", _this.$box).css("width") )
        }, json.transitionTime, function () {
            $(".dmui-banner-ul", _this.$box).append($(".dmui-banner-li", _this.$box).eq(0).remove()).css("left", "0");
        });

        this.animateAuto && this.interval(json);
    };
    //向左滑动动画
    banner.prototype.animateNext= function(json){
        if(json.data.length < 2) return;
        var _this= this;
        $(".dmui-banner-lamp>i", this.$box).removeClass("active").eq($(".dmui-banner-li", _this.$box).eq(json.data.length-1).attr("data-index")).addClass("active");
        $(".dmui-banner-ul", _this.$box).prepend($(".dmui-banner-li", _this.$box).eq(json.data.length-1).remove()).css({
            left : ( "-"+ $(".dmui-banner-li", _this.$box).css("width") )
        }).animate({
            left : 0
        }, json.transitionTime)

        this.animateAuto && this.interval(json);
    };
    //手动操作向右
    banner.prototype.operPrev= function(json){
        this.clearInterval();
        json.transitionTime= this.showImage == 1 ? json.transitionTime : 500;
        this.animatePrev(json);
    };
    //手动操作向左
    banner.prototype.operNext= function(json){
        this.clearInterval();
        json.transitionTime= this.showImage == 1 ? json.transitionTime : 500;
        this.animateNext(json);
    };
    //事件注册
    banner.prototype.event= function(json){
        var _this= this;
        $(".dmui-banner-prev", _this.$box).tap(function(){
            _this.operNext(json);
        });
        $(".dmui-banner-next", _this.$box).tap(function(){
            _this.operPrev(json);
        });
        // _this.$box.swipeleft(function(){
        //     var e = window.event;
        //     e.stopPropagation();
        //     e.preventDefault();
        //     _this.operPrev(json);
        //     return false;
        // });
        // _this.$box.swiperight(function(){
        //     var e = window.event;
        //     e.stopPropagation();
        //     e.preventDefault();
        //     _this.operNext(json);
        //     return false;
        // });
       _this.$box.on("touchstart", function(e) {
           e.preventDefault();
           e.stopPropagation();
            _this.startX = e.originalEvent.changedTouches[0].pageX,
                _this.startY = e.originalEvent.changedTouches[0].pageY;
           return false;
        });
        _this.$box.on("touchmove", function(e) {
            e.preventDefault();
            e.stopPropagation();
            // _this.moveEndX = e.originalEvent.changedTouches[0].pageX,
            //     _this.moveEndY = e.originalEvent.changedTouches[0].pageY,
            //     _this.X = _this.moveEndX - _this.startX,
            //     _this.Y = _this.moveEndY - _this.startY;
            return false;
        });
        _this.$box.on("touchend", function(e) {
            e.preventDefault();
            e.stopPropagation();
            _this.moveEndX = e.originalEvent.changedTouches[0].pageX,
                _this.moveEndY = e.originalEvent.changedTouches[0].pageY;
            _this.X = _this.moveEndX - _this.startX,
                _this.Y = _this.moveEndY - _this.startY;

            if ( _this.X > 30 ) {
                _this.operNext(json);
            }
            else if ( _this.X < -30 ) {
                _this.operPrev(json);
            }else{
                var url= json.data[ $(".dmui-banner-li", _this.$box).eq(0).attr("data-index") ].href;
                    id  = json.data[ $(".dmui-banner-li", _this.$box).eq(0).attr("data-index") ].id,
                    title  = json.data[ $(".dmui-banner-li", _this.$box).eq(0).attr("data-index") ].title || "";
                    sendByUrl("/SaveBannerClicke", {id:id,title:title}, function(res) {
                    }); 
                setTimeout(function(){
                    if(url && url != ''){
                        try{
                            window.android.webInfo(url);
                        }catch (e){
                            try{
                                window.webInfo(url);
                            }catch (e){
                                location.href = url;
                            }
                        }
                    }
                },200);  
                // //单击跳转
                // var url= json.data[ $(".dmui-banner-li", _this.$box).eq(0).attr("data-index") ].href;
                // if(json.data[ $(".dmui-banner-li", _this.$box).eq(0).attr("data-index") ].href){
                //     $("#linkTarget")[0] || $("body").append("<a id='linkTarget' class='fix' style='width:20px;height:20px;display:block !important;' href='"+
                //         url+ "'  target='_blank'>&nbsp;</a>");
                //     var openLink = $("#linkTarget");
                //     openLink.attr('href', url);
                //     openLink[0].click();
                // }
            }
            return false;
        });
    };
    jQuery.extend({
        banner : function(json){
            var B = new banner(json);
            B.init(json);
        }
    });

    // $("#banner").on({
    //     swipeleft : function (e) {
    //         e= e || window.event;
    //         e.stopPropagation();
    //     },
    //     swiperight : function (e) {
    //         e= e || window.event;
    //         e.stopPropagation();
    //     }
    // });
})();

